﻿/*
 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */

/**
 * @file Special Character plugin
 */

CKEDITOR.plugins.add('specialchar',
    {
        requires: ['dialog'],

        // List of available localizations.
        availableLangs: {
            cs: 1,
            cy: 1,
            de: 1,
            el: 1,
            en: 1,
            eo: 1,
            et: 1,
            fa: 1,
            fi: 1,
            fr: 1,
            he: 1,
            hr: 1,
            it: 1,
            nb: 1,
            nl: 1,
            no: 1,
            'pt-br': 1,
            tr: 1,
            ug: 1,
            'zh-cn': 1
        },

        init: function (editor) {
            var pluginName = 'specialchar',
                plugin = this;

            // Register the dialog.
            CKEDITOR.dialog.add(pluginName, this.path + 'dialogs/specialchar.js');

            editor.addCommand(pluginName,
                {
                    exec: function () {
                        var langCode = editor.langCode;
                        langCode = plugin.availableLangs[langCode] ? langCode : 'en';

                        CKEDITOR.scriptLoader.load(
                            CKEDITOR.getUrl(plugin.path + 'lang/' + langCode + '.js'),
                            function () {
                                CKEDITOR.tools.extend(editor.lang.specialChar, plugin.langEntries[langCode]);
                                editor.openDialog(pluginName);
                            });
                    },
                    modes: {wysiwyg: 1},
                    canUndo: false
                });

            // Register the toolbar button.
            editor.ui.addButton('SpecialChar',
                {
                    label: editor.lang.specialChar.toolbar,
                    command: pluginName
                });
        }
    });

/**
 * The list of special characters visible in the Special Character dialog window.
 * @type Array
 * @example
 * config.specialChars = [ '&quot;', '&rsquo;', [ '&custom;', 'Custom label' ] ];
 * config.specialChars = config.specialChars.concat( [ '&quot;', [ '&rsquo;', 'Custom label' ] ] );
 */
CKEDITOR.config.specialChars =
    [
        '!', '&quot;', '#', '$', '%', '&amp;', "'", '(', ')', '*', '+', '-', '.', '/',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';',
        '&lt;', '=', '&gt;', '?', '@',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        '[', ']', '^', '_', '`',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
        'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        '{', '|', '}', '~',
        "&euro;", "&lsquo;", "&rsquo;", "&ldquo;", "&rdquo;", "&ndash;", "&mdash;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&reg;", "&macr;", "&deg;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&OElig;", "&oelig;", "&#372;", "&#374", "&#373", "&#375;", "&sbquo;", "&#8219;", "&bdquo;", "&hellip;", "&trade;", "&#9658;", "&bull;", "&rarr;", "&rArr;", "&hArr;", "&diams;", "&asymp;"
    ];
